In the area of software development, a software build automation tool, for example Maven, can be used to define a project coordinate-space that identifies particular versions of software libraries required for operations such as compiling, packaging, testing, and deploying a particular software code. A general assumption in such environments is that the content of any given version of a software artifact does not change unexpectedly, and that, if the content does need to be changed, then a new artifact is created with a new set of coordinates, typically including a new “version” coordinate.
However, some enterprise software vendors use library update and patching schemes which are not compatible with this assumption. For example, in some application server environments, when a one-off patch for a software library is issued, the version number of that library might not be increased. This can potentially create a scenario where a packed library in an execution environment does not match a corresponding library in a software developer's compile-time environment, even if their version numbers are the same.